import 'package:flutter/material.dart';
import 'package:flutter_demo/ui/pages/read/tools/paper_point.dart';

/// C面裁剪
class SideCClip extends CustomClipper<Path> {
  ValueNotifier<PaperPoint> p;
  bool isNext;

  SideCClip(this.p, this.isNext) : super(reclip: p);

  @override
  Path getClip(Size size) {
    //print(p.value.a.x);

    ///书籍区域
    Path mPath = Path();
    //画矩形局域
    mPath.addRect(Rect.fromCenter(
        center: Offset(size.width / 2, size.height / 2),
        width: size.width,
        height: size.height));
    Path mPathAB = Path();
    // 翻页
    if (p.value.a != p.value.f && p.value.a.x > -size.width) {
      // debugPrint("当前页 ${p.value.a}  ${p.value.f}");
      mPathAB.moveTo(p.value.c.x, p.value.c.y);
      mPathAB.quadraticBezierTo(
          p.value.e.x, p.value.e.y, p.value.b.x, p.value.b.y);
      mPathAB.lineTo(p.value.a.x, p.value.a.y);
      mPathAB.lineTo(p.value.k.x, p.value.k.y);
      mPathAB.quadraticBezierTo(
          p.value.h.x, p.value.h.y, p.value.j.x, p.value.j.y);
      mPathAB.lineTo(p.value.f.x, p.value.f.y);
      mPathAB.close();
      Path mPathC =
          Path.combine(PathOperation.reverseDifference, mPathAB, mPath);
      return mPathC;
    } else {
      // 全区域 Path
      if (isNext) {
        return Path();
      } else {
        return mPath;
      }
    }
  }

  @override
  bool shouldReclip(covariant SideCClip oldClipper) {
    return p != oldClipper.p;
  }
}
